"use strict";
// 布尔类型  声明一个布尔类型的变量
let b;
let b2 = true;
b = true;
b = false;
// b = 123;
// b = '1231';
//字符串类型  声明一个字符串类型的变量
let s;
s = '123';
let s2 = 'i miss you';
// s = 123;
// s = [];
// s = true;
//数字类型
let n;
n = 10;
n = 0b10; // 二进制
n = 0o345; //八进制
n = 0x1fab; // 十六进制
// n = true;
// n = 'abc';
// n = {};
//字面量类型  声明一个类型为 20 的变量
// let z: 20;
// z = 20;
// z = 30;
let z;
z = 'right';
// z = 'xxx';
//any 类型  任意.  
let a;
a = 111;
// a = 'sss';
// a = true;
// a = {};
// a = [];
// a.map();
//void 类型
// let u: void;
// u = undefined;
// u = 123;
// u = 'afse';
// u = null;
//设置当前函数返回值的类型为空
// function fn(): void{
// }
//object 类型 (设置变量的类型为引用类型)
let o = {};
o = [];
o = () => { };
//下面的赋值都无效会报错
// o = 100;
// o = '12312';
// o = true;
//数组类型. 要求每个数组元素的类型都是一致的
// let stu: string[];
// stu = ['a','b','c', 1];
//第二种设置方式   『泛型类型』
// let stu2: Array<string>;
// stu2 = ['a','b','c'];
//元组类型
// let info: [string, number] = ['张三', 10];
// let infos: [string, number][] = [
//   ['张三', 20],
//   ['李四', 15]
// ];
//枚举类型
//枚举类型中元素的值默认是从 0 开始依次赋值的
//枚举类型的值只能基本数据类型的值
var Gender;
(function (Gender) {
    Gender["Female"] = "\u5973";
    Gender["Male"] = "\u7537";
    Gender["Secret"] = "\u4FDD\u5BC6";
})(Gender || (Gender = {}));
let obj = {
    gender: Gender.Male
};
var Week;
(function (Week) {
    Week[Week["Mon"] = 1] = "Mon";
    Week[Week["Tues"] = 2] = "Tues";
    Week[Week["Wed"] = 3] = "Wed";
    Week[Week["Thu"] = 4] = "Thu";
    Week[Week["Fri"] = 5] = "Fri";
    Week[Week["Sat"] = 6] = "Sat";
    Week[Week["Sun"] = 7] = "Sun";
})(Week || (Week = {}));
console.log(obj);
//联合类型
let value;
value = 'center';
let theme;
//类型断言
// let div = document.querySelector('div') as HTMLDivElement;
let div = document.querySelector('div');
//告诉 TS div 变量的类型为 HTMLDivElement
div.style.background = '#ccc';
//类型推断
let n2 = 100; //会推断出 n2 变量的类型为 number
let n3; // 会推断出 n3 变量的类型为 any
n3 = 100;
n3 = 'abc';
